package nowCoder;

import java.util.*;

public class HJ44 {
    /*
0 0 8 7 1 9 2 4 5
9 0 5 2 3 4 0 8 6
0 7 4 8 0 6 1 0 3
7 0 3 0 9 2 0 0 0
5 0 0 0 0 0 0 0 0
8 6 1 4 0 3 5 2 9
4 0 0 0 2 0 0 0 8
0 0 0 0 0 0 0 7 0
1 0 7 0 6 8 0 5 0
     */
    static LinkedList<Integer> kn = new LinkedList<>();
    static {
        kn.add(1);
        kn.add(2);
        kn.add(3);
        kn.add(4);
        kn.add(5);
        kn.add(6);
        kn.add(7);
        kn.add(8);
        kn.add(9);}
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int[][] xy = new int[9][9];
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                xy[i][j] = in.nextInt();
            }
        }
        tian(0,0, xy);
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                System.out.print(xy[i][j]+" ");
            }
            System.out.println();
        }
    }
    public static boolean tian(int x, int y, int[][] xy){
        for (int i = x; i < 9; i++) {
            for (int j = y; j < 9; j++) {
                if (xy[i][j] != 0){
                    continue;
                }
                LinkedList<Integer> kn = HJ44.kn;
                ln:
                for (Integer integer : kn) {
                        // 横
                    for (int k = 0; k < 9; k++) {
                        if (xy[i][k] == integer){
                            continue ln;
                        }
                    }
                        // 竖
                    for (int k = 0; k < 9; k++) {
                        if (xy[k][j] == integer){
                            continue ln;
                        }
                    }
                        // 方
                    int xx = i / 3 * 3;
                    int yy = j / 3 * 3;
                    for (int k = 0; k < 3; k++) {
                        for (int l = 0; l < 3; l++) {
                            if (xy[xx+k][yy+l] == integer){
                                continue ln;
                            }
                        }
                    }
                    xy[i][j] = integer;
                    if (!tian(i,j,xy))
                        xy[i][j] = 0;
                }
                if (xy[i][j] == 0){
                    return false;
                }
            }
            y = 0;
        }
        return true;
    }
//    public static void main(String[] args) {
//        Scanner in = new Scanner(System.in);
//        List<Dian> list = new ArrayList<>();
//        int[][] sk = new int[9][9];
//        for (int i = 0; i < 9; i++) {
//            for (int j = 0; j < 9; j++) {
//                sk[i][j] = in.nextInt();
//                if (sk[i][j] == 0) {
//                    list.add(new Dian(i, j));
//                }
//            }
//        }
//        long l = System.currentTimeMillis();
//        do {
//            Iterator<Dian> next = list.iterator();
//            while (next.hasNext()) {
//                Dian dian = next.next();
//                // 横
//                int[] h = sk[dian.x];
//                for (int i = 0; i < 9; i++) {
//                    Iterator<Integer> dkn = dian.kn.iterator();
//                    while (dkn.hasNext()) {
//                        Integer d = dkn.next();
//                        if (d == h[i])
//                            dkn.remove();
//                    }
//                }
//                if (dian.kn.size() == 1) {
//                    sk[dian.x][dian.y] = dian.kn.getFirst();
//                    next.remove();
//                    continue;
//                }
//                // 方
//                int x = dian.x / 3 * 3;
//                int y = dian.y / 3 * 3;
//                ln:
//                for (int i = 0; i < 3; i++) {
//                    Iterator<Integer> dkn = dian.kn.iterator();
//                    while (dkn.hasNext()) {
//                        Integer d = dkn.next();
//                        for (int j = 0; j < 3; j++) {
//                            if (d == sk[x+i][y+j]) {
//                                dkn.remove();
//                                break ln;
//                            }
//                        }
//                    }
//                }
//                if (dian.kn.size() == 1) {
//                    sk[dian.x][dian.y] = dian.kn.getFirst();
//                    next.remove();
//                    continue;
//                }
//                // 竖
//                Iterator<Integer> dkn = dian.kn.iterator();
//                while (dkn.hasNext()) {
//                    Integer d = dkn.next();
//                    for (int i = 0; i < 9; i++) {
//                        if (d == sk[i][dian.y]) {
//                            dkn.remove();
//                        }
//                    }
//                }
//                if (dian.kn.size() == 1) {
//                    sk[dian.x][dian.y] = dian.kn.getFirst();
//                    next.remove();
//                }
//            }
//        } while (list.size() != 0);
//        for (int i = 0; i < 9; i++) {
//            for (int j = 0; j < 9; j++) {
//                System.out.print(sk[i][j]+" ");
//            }
//            System.out.println();
//        }
//        System.out.println(l-System.currentTimeMillis());
//    }

//    static class Dian {
//        int x;
//        int y;
//        LinkedList<Integer> kn = new LinkedList<>();

//        public Dian(int x, int y) {
//            this.x = x;
//            this.y = y;
//            kn.add(1);
//            kn.add(2);
//            kn.add(3);
//            kn.add(4);
//            kn.add(5);
//            kn.add(6);
//            kn.add(7);
//            kn.add(8);
//            kn.add(9);
//        }
//    }
}
